package com.developmentReformProject.dao;

/***********************************************************************
 * Module:  EnterpriseDao.java
 * Author:  刘子儒
 * Purpose: Defines the Interface EnterpriseDao
 ***********************************************************************/

import com.developmentReformProject.dto.AdminQueryDto;
import com.developmentReformProject.dto.EnterpriseQueryDto;
import com.developmentReformProject.entity.Admin;
import com.developmentReformProject.entity.Enterprise;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
/** @pdOid d0f9f4d4-1ad4-4a2b-9193-8a65844b520e */
public interface EnterpriseDao extends BaseDao {
    /**
     * 企业注册
     * @param enterprise
     */
    void addEnterprise(Enterprise enterprise);

    /**
     * 修改企业信息
     * @param enterprise
     */
    void updateEnterprise(Enterprise enterprise);

    /**
     * 删除企业信息（更改企业状态码）
     * @param enterpriseId
     */
    void deleteEnterprise(Integer enterpriseId);

    /**
     * 批量删除企业
     * @param enterpriseIds
     */
    void deleteEnterpriseBatch(int[] enterpriseIds);

    /**
     * 企业登录
     * @param enterpriseAccountNumber
     * @param enterprisePassword
     * @return
     */
    Enterprise enterpriseLogin(@Param("enterpriseAccountNumber") String enterpriseAccountNumber, @Param("enterprisePassword") String enterprisePassword);
    /**
     * 查找企业
     * @param enterpriseId
     * @return
     */
    Enterprise queryEnterprise(Integer enterpriseId);

    /**
     * 批量查找企业
     * @param enterprise
     * @return
     */
    List<Enterprise> queryEnterpriseList(Enterprise enterprise);

    /**
     * 查找所有正常状态企业
     * @return
     */
    List<Enterprise> queryAllEnterprise();

    /**
     * 查找所有企业
     * @return
     */
    List<Enterprise> queryEnterpriseAll();
    /**
     * 更改企业密码
     * @param
     */
    void updateEnterprisePassword(@Param("enterpriseAccountNumber")String accountNumber, @Param("enterprisePassword") String newPassword);

    /**
     * 计数
     * @param enterpriseQueryDto
     * @return
     */
    int countSelective(EnterpriseQueryDto enterpriseQueryDto);

    /**
     * 动态查询
     * @param enterpriseQueryDto
     * @return
     * @throws Exception
     */

    public List<Enterprise> selectSelective(EnterpriseQueryDto enterpriseQueryDto) throws Exception;

    /**
     * 查询密码
     * @param enterpriseAccountNumber
     * @return
     */
    public String queryPassword(String enterpriseAccountNumber);

    /**
     * 企业查询自己的项目
     * @param enterpriseId
     * @return
     */
    public String queryAuditStatus(Integer enterpriseId);
    public Enterprise queryByUsername(String enterpriseAccountNumber);

    public void cleanEnterprise(int enterpriseId);
    public List<Enterprise> listDelete(EnterpriseQueryDto enterpriseQueryDto);
    int countClean(EnterpriseQueryDto enterpriseQueryDto);

}
